package 双指针法;

import common.GeneralFunction;

import java.util.HashSet;
import java.util.Set;

public class NC41最长无重复子串 {

    /**
     * 给定一个数组arr，返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同)。
     */

    public int maxLength (int[] arr) {

        if(arr.length<1){
            return 0;
        }

        Set<Integer> set=new HashSet<>();
        set.add(arr[0]);
        int left=0;
        int right=1;
        int maxCount=0;

        while (right<arr.length){

            if(set.contains(arr[right])){
                set.remove(arr[left]);
                left++;
            }else{
                set.add(arr[right]);
                right++;
            }

            maxCount=Math.max(maxCount,right-left);
        }

        return maxCount;
    }

    public static void main(String[] args) {
        GeneralFunction generalFunction=new GeneralFunction(NC41最长无重复子串.class, (Object) new int[]{2,3,4,5});
        generalFunction.runAllMethod();
    }

}
